#include "../../include/public/util.h"
#include <inttypes.h>

// // 默认为4字节
// int util_ch_get_type_len(ch_type_t type)
// {
//     switch (type)
//     {
//     case CH_TYPE_BIT:
//     case CH_TYPE_INT8:
//     case CH_TYPE_UINT8:
//         return 1;
//     case CH_TYPE_UINT16:
//     case CH_TYPE_INT16:
//         return 2;
//     case CH_TYPE_FLOAT32:
//     case CH_TYPE_UINT32:
//     case CH_TYPE_INT32:
//         return 4;
//     case CH_TYPE_FLOAT64:
//     // case CH_TYPE_UINT64:
//     case CH_TYPE_INT64:
//         return 8;    
//     case CH_TYPE_STRING32:
//         return 32;
//     case CH_TYPE_NULL:
//         return 4;
//     }
// }

// ch_type_t util_ch_format_type(char *type)
// {
//     if (strcmp(type, "1") == 0)
//         return CH_TYPE_BIT;  
//     if (strcmp(type, "4") == 0)
//         return CH_TYPE_UINT8;
//     if (strcmp(type, "5") == 0)
//         return CH_TYPE_INT8;
//     if (strcmp(type, "6") == 0)
//         return CH_TYPE_UINT16;
//     if (strcmp(type, "7") == 0)
//         return CH_TYPE_INT16;
//     if (strcmp(type, "8") == 0)
//         return CH_TYPE_UINT32;
//     if (strcmp(type, "9") == 0)
//         return CH_TYPE_INT32;
//     if (strcmp(type, "10") == 0)
//         return CH_TYPE_UINT64;
//     if (strcmp(type, "11") == 0)
//         return CH_TYPE_INT64;
//     if (strcmp(type, "12") == 0)
//         return CH_TYPE_FLOAT32;
//     return CH_TYPE_NULL;
// }

// ch_attri_t util_ch_format_attri(char *attri)
// {
//     if (strcmp(attri, "YC") == 0)
//         return CH_ATTRI_YC;
//     if (strcmp(attri, "YX") == 0)
//         return CH_ATTRI_YX;
//     if (strcmp(attri, "YT") == 0)
//         return CH_ATTRI_YT;
//     if (strcmp(attri, "YK") == 0)
//         return CH_ATTRI_YK;
//     if (strcmp(attri, "YM") == 0)
//         return CH_ATTRI_YM;
        
//     return CH_ATTRI_YC;
// }

// int util_ch_get_string_val(cfg_ch_t* ch,char* dst)
// {
//     char ch_mem_val[30] = "";
//     switch (ch->type)
//     {
//     case CH_TYPE_BIT:
//     case CH_TYPE_UINT8:
//         snprintf(ch_mem_val,sizeof(ch_mem_val),"%d",*ch->data);
//         break;
//     case CH_TYPE_INT8:
//         snprintf(ch_mem_val,sizeof(ch_mem_val),"%d",*(int8_t*)ch->data);
//         break;
//     case CH_TYPE_UINT16:
//         snprintf(ch_mem_val,sizeof(ch_mem_val),"%d",*(uint16_t*)ch->data);
//         break;
//     case CH_TYPE_INT16:
//         snprintf(ch_mem_val,sizeof(ch_mem_val),"%d",*(int16_t*)ch->data);
//         break;
//     case CH_TYPE_FLOAT32:
//         snprintf(ch_mem_val,sizeof(ch_mem_val),"%.3f",*(float*)ch->data);
//         break;
//     case CH_TYPE_UINT32:
//         snprintf(ch_mem_val,sizeof(ch_mem_val),"%d",*(uint32_t*)ch->data);
//         break;
//     case CH_TYPE_INT32:
//         snprintf(ch_mem_val,sizeof(ch_mem_val),"%d",*(int32_t*)ch->data);
//         break;
//     case CH_TYPE_FLOAT64:
//         snprintf(ch_mem_val,sizeof(ch_mem_val),"%g",*(double*)ch->data);
//         break;
//     // case CH_TYPE_UINT64:
//     //     sprintf(ch_mem_val,"%lu",*(uint64_t*)ch->data);
//     //     break;
//     case CH_TYPE_INT64:
//         snprintf(ch_mem_val,sizeof(ch_mem_val),"%"PRId64,*(int64_t*)ch->data);
//         break;
//     case CH_TYPE_STRING32:
//         memcpy(ch_mem_val,ch->data,32);
//         break;
//     case CH_TYPE_NULL:
//         return -1;
//     default:
//         return -1;
//     }

//     strcpy(dst,ch_mem_val);

//     return 0;
// }




// int util_ch_get_double_val(cfg_ch_t* ch,double* val)
// {
//     switch (ch->type)
//     {
//     case CH_TYPE_BIT:
//         *val = *ch->data & 0x01;
//         break;
//     case CH_TYPE_UINT8:
//         *val = *ch->data;
//         break;
//     case CH_TYPE_INT8:
//         *val = *(int8_t*)ch->data;
//         break;
//     case CH_TYPE_UINT16:
//         *val = *(uint16_t*)ch->data;
//         break;
//     case CH_TYPE_INT16:
//         *val = *(int16_t*)ch->data;
//         break;
//     case CH_TYPE_FLOAT32:
//         *val = *(float*)ch->data;
//         break;
//     case CH_TYPE_UINT32:
//         *val = *(uint32_t*)ch->data;
//         break;
//     case CH_TYPE_INT32:
//         *val = *(int32_t*)ch->data;
//         break;
//     case CH_TYPE_FLOAT64:
//         *val = *(double*)ch->data;
//         break;
//     // case CH_TYPE_UINT64:
//     //     *val = *(uint64_t*)ch->data;
//     //     break;
//     case CH_TYPE_INT64:
//         *val = *(int64_t*)ch->data;
//         break;
//     default:
//         return -1;
//     }

//     return 0;
// }

// int util_ch_set_double_val(cfg_ch_t* ch,double* val)
// {
//     ch->qos[0] = '1';
//     switch (ch->type)
//     {
//     case CH_TYPE_BIT:
//         *ch->data = (int)*val & 0x01;
//         break;
//     case CH_TYPE_UINT8:
//         *ch->data = (uint8_t)*val;
//         break;
//     case CH_TYPE_INT8:
//         *ch->data = (int8_t)*val;
//         break;
//     case CH_TYPE_UINT16:
//         *(uint16_t*)ch->data = (uint16_t)*val;
//         break;
//     case CH_TYPE_INT16:
//         *(int16_t*)ch->data = (int16_t)*val;
//         break;
//     case CH_TYPE_FLOAT32:
//         *(float*)ch->data = (float)*val; 
//         break;
//     case CH_TYPE_UINT32:
//         *(uint32_t*)ch->data = (uint32_t)*val;
//         break;
//     case CH_TYPE_INT32:
//         *(int32_t*)ch->data = (int32_t)*val;
//         break;
//     case CH_TYPE_FLOAT64:
//         *(double*)ch->data = *val;
//         break;
//     // case CH_TYPE_UINT64:
//     //     *(uint64_t*)ch->data = (uint64_t)*val;
//     //     break;
//     case CH_TYPE_INT64:
//         *(int64_t*)ch->data = (int64_t)*val;
//         break;
//     default:
//         ch->qos[0] = '0';
//         return -1;
//     }

//     return 0;
// }

// int util_ch_get_integer_val(cfg_ch_t* ch,int64_t* val)
// {
//     switch (ch->type)
//     {
//     case CH_TYPE_BIT:
//         *val = *ch->data & 0x01;
//         break;
//     case CH_TYPE_UINT8:
//         *val = *ch->data;
//         break;
//     case CH_TYPE_INT8:
//         *val = *(int8_t*)ch->data;
//         break;
//     case CH_TYPE_UINT16:
//         *val = *(uint16_t*)ch->data;
//         break;
//     case CH_TYPE_INT16:
//         *val = *(int16_t*)ch->data;
//         break;
//     case CH_TYPE_FLOAT32:
//         *val = (int64_t)*(float*)ch->data;
//         break;
//     case CH_TYPE_UINT32:
//         *val = *(uint32_t*)ch->data;
//         break;
//     case CH_TYPE_INT32:
//         *val = *(int32_t*)ch->data;
//         break;
//     case CH_TYPE_FLOAT64:
//         *val = (int64_t)*(double*)ch->data;
//         break;
//     // case CH_TYPE_UINT64:
//     //     *val = (int64_t)*(uint64_t*)ch->data;
//     //     break;
//     case CH_TYPE_INT64:
//         *val = *(int64_t*)ch->data;
//         break;
//     default:
//         return -1;
//     }

//     return 0;
// }

// int util_ch_set_integer_val(cfg_ch_t* ch,int64_t* val)
// {
//     ch->qos[0] = '1';
//     switch (ch->type)
//     {
//     case CH_TYPE_BIT:
//         *ch->data = *val & 0x01;
//         break;
//     case CH_TYPE_UINT8:
//         *ch->data = (uint8_t)*val;
//         break;
//     case CH_TYPE_INT8:
//         *ch->data = (int8_t)*val;
//         break;
//     case CH_TYPE_UINT16:
//         *(uint16_t*)ch->data = (uint16_t)*val;
//         break;
//     case CH_TYPE_INT16:
//         *(int16_t*)ch->data = (int16_t)*val;
//         break;
//     case CH_TYPE_FLOAT32:
//         *(float*)ch->data = (float)*val; 
//         break;
//     case CH_TYPE_UINT32:
//         *(uint32_t*)ch->data = (uint32_t)*val;
//         break;
//     case CH_TYPE_INT32:
//         *(int32_t*)ch->data = (int32_t)*val;
//         break;
//     case CH_TYPE_FLOAT64:
//         *(double*)ch->data = (double)*val;
//         break;
//     // case CH_TYPE_UINT64:
//     //     *(uint64_t*)ch->data = (uint64_t)*val;
//     //     break;
//     case CH_TYPE_INT64:
//         *(int64_t*)ch->data = *val;
//         break;
//     default:
//         ch->qos[0] = '0';
//         return -1;
//     }

//     return 0;
// }
